package com.zut.controller;

import com.zut.Pojo.Result;
import com.zut.Pojo.UserInfo;
import com.zut.Service.loginService.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;
import java.util.Objects;

/**
 * 登录控制接口
 */

@RequestMapping("/user")
@RestController
public class loginController {

    private final String PhoneRegex= "^((13[0-9])|(14(0|[5-7]|9))|(15([0-3]|[5-9]))|(16(2|[5-7]))|(17[0-8])|(18[0-9])|(19([0-3]|[5-9])))\\d{8}$";

    @Autowired
    private LoginService loginService;



    /**
     * @Author: 无恙
     * @Description:密码登录接口
     * @Params: Phone 手机号 psw 密码
     */
    @PostMapping("/login/psw")
    public Result loginByPsw(@RequestParam("phone") String phone,@RequestParam("password") String psw){
        //判断手机号
        if(!isPhoneNumberValid(phone)){
            return Result.builder().code(200).desc("密码错误或账号不存在！").build();
        }
        //登录服务
        Map<String, UserInfo> stringUserInfoMap = loginService.loginByPsw(phone, psw);
        if(Objects.isNull(stringUserInfoMap)){
            return Result.builder().code(200).desc("密码错误或账号不存在！").build();
        }else {
            return  Result.builder().code(200).data(stringUserInfoMap).desc("登录成功").build();
        }

    }
    /**
     * @Author: 无恙
     * @Description: 验证码登录接口
     * TODO 未完成
     */
    @PostMapping("/login/code")
    public Result loginByCode(@RequestParam("UUID") String UUID,@RequestParam("phone") String phone,@RequestParam("code") String code){
        if(UUID.isEmpty() || phone.isEmpty() || code.isEmpty()){
            return Result.builder().code(201).desc("数据异常！").build();
        }
        //验证码登录服务
        UserInfo userInfo = loginService.loginByCode(UUID,phone,code);
        if(Objects.isNull(userInfo)){
            return Result.builder().code(202).desc("验证码错误！").build();
        }else {
            return  Result.builder().code(200).data(userInfo).desc("登录成功").build();
        }
    }

    /**
     * 获取验证码接口
     * @param phone
     * @return
     */
    @GetMapping("/getcode")
    public Result GetCode(String phone){
        System.out.println(phone);
        if(isPhoneNumberValid(phone)){
            //获取验证码
            String UUID = loginService.GetCode(phone);
            //封装结果
            if(UUID.isEmpty()) {
                return Result.builder().code(200).desc("服务器异常！").build();
            }else {
                return Result.builder().code(200).desc("发送成功").data(UUID).build();
            }
        }else {
            return Result.builder().code(510).desc("电话号码不符合规则！").build();
        }


    }
    /**
     * 判断手机号是否正确且不能为空
     * @param phoneNumber 手机号
     * @return true表示手机号正确且不为空，false表示手机号不正确或为空
     */
    public boolean isPhoneNumberValid(String phoneNumber) {
        if (phoneNumber == null || phoneNumber.isEmpty()) {
            return false; // 手机号为空
        }

        // 使用正则表达式判断手机号是否正确
        String regex = PhoneRegex;
        return phoneNumber.matches(regex);
    }


}
